Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 25 Entwickeln von Steuerelementen
  gp 25.1 Einführung
    gp 25.1.1 Entwicklungsszenarien
    gp 25.1.2 Testen eines Steuerelements
  gp 25.2 Steuerelemente mit »UserControl«
    gp 25.2.1 Beispielprogramm eines Benutzersteuerelements
    gp 25.2.2 Die Eigenschaften des Benutzersteuerelements
    gp 25.2.3 Attribute zur Beeinflussung eines Benutzersteuerelements
    gp 25.2.4 Ereignisse des Benutzersteuerelements
    gp 25.2.5 Bereitstellen einer Toolbox-Bitmap
    gp 25.2.6 Zusammenfassung des Codes für »EllipseLabel«
  gp 25.3 Ableiten eines vorhandenen Steuerelements
  gp 25.4 Ein eigenes Steuerelement entwerfen
  gp 25.5 Lizenzieren eines Steuerelements
    gp 25.5.1 Beispiel einer einfachen Lizenzierung


Galileo Computing

25.5 Lizenzieren eines Steuerelementdowntop

Stellen Sie sich vor, Sie investieren viel Zeit und Schweiß in ein neues Steuerelement. Es ist mit brillanten Features ausgestattet, und Sie können dafür 500 Euro verlangen (schließlich sollen sich Ihre Investitionen auch rentieren). Läuft Ihnen nicht ein kalter Schauer über den Rücken, wenn Sie sich vorstellen, dass ein Unbedarfter hingehen könnte und Ihr Steuerelement einfach ableitet, es vielleicht noch großzügig um einige sinnlose Eigenschaften ergänzt und dann für nur 100 Euro anbietet? Ihre Investitionen wären umsonst gewesen. Vielleicht wollen Sie aber auch nur eine Demo-Version Ihres Controls, die nur eine bestimmte Laufzeit hat, verteilen. Oder Sie wollen sicherstellen, dass nur ehrliche Käufer Ihres Benutzersteuerelements dieses auch in den Anwendungen verwenden.

Was also ist zu tun, um alle Forderungen zu erfüllen? Die Lösung muss lauten: Sie lizenzieren das Steuerelement.

Die Lizenzierung ist ein Bestandteil des .NET Frameworks und basiert auf Klassen, die zum Namespace System.ComponentModel gehören. Im Wesentlichsten wird das Lizenzierungsmodell durch zwei Komponenten beschrieben:

gp  LicenseManager ist verantwortlich für die Überprüfung der Lizenzierung. Der Lizenzmanager fragt nach, ob eine bestimmte Klasse lizenziert ist oder nicht.
gp  LicenseProvider ermittelt die Lizenzinformationen und enthält Validierungscode. Damit ein Komponentenentwickler eine anforderungsgerechte Validierung bereitstellen kann, lässt sich die Klasse LicenseProvider ableiten. Das .NET Framework stellt mit LicFileLicenseprovider eine ganz simple Ableitung bereit, die für eine einfache Lizenzierung und für Testzwecke ganz gut geeignet ist, aber in der Praxis nicht eingesetzt werden sollte.

Galileo Computing

25.5.1 Beispiel einer einfachen Lizenzierung  toptop

Am besten ist, wenn wir uns den Ablauf der Lizenzierung an einem Beispiel ansehen. Dazu benutzen wir als Ausgangspunkt das weiter oben vorgestellte Steuerelement NumericTextbox, das wir jetzt vor nicht autorisierten Zugriffen schützen wollen. Wir werden dabei auf LicFileLicenseProvider als den Lizenzinformationsträger zurückgreifen.

Der Code der lizenzierten Klasse

Es sind einige Ergänzungen vorzunehmen, die wir uns jetzt zunächst ansehen sollten.


[ToolboxBitmap("..\\..\\NumericTextbox.bmp")]
[LicenseProvider(typeof(LicFileLicenseProvider))]
public class NumericTextbox : TextBox {
  License license;
  public NumericTextbox() {
    this.license = LicenseManager.Validate(typeof(NumericTextbox), this);
  }
  protected override void Dispose(bool dispose) {
    // Anweisungen
    if (this.license != null) {
      this.license.Dispose();
      this.license = null;
    }
    base.Dispose(dispose);
  }
  protected override void OnKeyPress(KeyPressEventArgs e) {
    ...
  }
}

Der Lizenzgeber (LicenseProdider) wird vor der Klassendefinition mit dem gleichnamigen Attribut LicenseProvider bekannt gegeben. Auf Klassenebene ist eine Variable vom Typ License deklariert. Das Objekt enthält, wenn es initialisiert ist, den Lizenzschlüssel aus den Lizenzinformationen.

Erzeugt wird die Lizenz im Konstruktor durch den Lizenzmanager. Dessen statische Methode Validate prüft, ob eine Lizenz erteilt werden kann. Übergeben werden muss der Methode der Typ des lizenzanfordernden Objekts sowie optional das Objekt selbst.

Kann die Lizenz nicht erteilt werden, wird eine Ausnahme vom Typ LicenseException ausgelöst. Sie können anstelle von Validate auch auf die Methode IsValid zurückgreifen, die im Falle einer Nichterteilung keine Exception auslöst.

Damit sind die Vorbereitungen schon getroffen. Wir brauchen nur noch den Code zu kompilieren und haben eine, wenn auch aufgrund des einfachen Lizenzproviders, schwach lizenzierte Komponente, die aber schon geschützt ist.

Bereitstellung einer Lizenzdatei (.LIC)

Sie können nun zur Projektmappe eine Windows-Anwendung hinzufügen und die Toolbox um das Steuerelement NumericControl ergänzen. Versuchen Sie jetzt, das Steuerelement auf die Form zu ziehen, werden Sie mit einer Fehlermeldung konfrontiert, denn der Lizenzmanager findet keine gültigen Lizenzinformationen. Wie sollte er auch, wir haben dem Steuerelement auch noch keine mit auf den Weg gegeben.

Lizenzen sind in Lizenzdateien enthalten, die üblicherweise die Dateierweiterung LIC haben. Grundsätzlich kann eine Lizenzdatei überall gespeichert werden. Wird jedoch LicLicenseFileProvider benutzt, dann muss die Speicherung an einer ganz bestimmten Lokalität erfolgen. Es handelt sich um den Ordner, der im Eigenschaftsfenster von der Eigenschaft Path angezeigt wird, wenn Sie in der Verweisliste den Verweis NumericTextbox markieren. In diesem Ordner befindet sich auch das Kompilat des Benutzersteuerelements.

Die LIC-Datei muss einem vorgeschriebenen Namen entsprechen. Er setzt sich zusammen aus dem Namespace und dem Klassennamen. Befindet sich die Klasse NumericTextBox im Namespace LicNumericTextbox, lautet der Bezeichner der Lizenzdatei somit:

LicNumericTextbox.NumericTextbox.lic

Die Lizenzdatei ist in diesem Fall eine einfache Textdatei, die Sie mit jedem beliebigen Editor schreiben können. Der Inhalt ist vorgeschrieben und muss lauten:

LicNumericTextbox.NumericTextbox is a licensed component.

Die Datei »Licences.licx«

Versuchen Sie nun erneut, das Steuerelement in die Form zu ziehen, werden Sie Erfolg haben, denn nun liegt eine gültige Validierung vor. Bei der Instanziierung wird im Ausgabeverzeichnis der Projektdateien die Datei Licences.licx erzeugt, bei der es sich ebenfalls um eine Textdatei handelt. In ihr sind alle Komponenten nebst Versionsnummer, Kulturinformationen und öffentlichem Schlüssel aufgeführt.

Das automatische Erstellen der Licences.licx-Datei funktioniert im Visual Studio 2005 nur, wenn der Designer dazu eingesetzt wird. Erstellen Sie hingegen eine Komponente mittels Programmcode, versagt der Automatismus, was dazu führt, dass kein Lizenzschlüssel in die Anwendung hineinkompiliert wird. Die lizenzierte Komponente würde ihren Dienst erst gar nicht antreten. In diesem Fall müssen Sie manuell die Komponente in die Licences.licx-Datei eintragen und unter Umständen diese Datei sogar selbst erzeugen.

Das Kompilieren der Anwendung

Hinter der Datei LC.exe verbirgt sich der Lizenz-Compiler, der alle in Licences.licx enthaltenen Einträge der Reihe nach abarbeitet. Der Lizenz-Compiler lädt die Assemblierung und ermittelt die Lizenzgeber (LicenseProvider) der eingetragenen Komponenten. LicenseProvider haben die Aufgabe, eine Lizenz zu suchen und daraus den Lizenzschlüssel zu ermitteln, der sich in der Lizenzdatei befindet. Handelt es sich um einen gültigen Schlüssel, wird er in die Datei .Licences eingetragen. Konventionsgemäß steht vor der Dateierweiterung der Name der ausführbaren EXE-Datei. Sie finden die Datei im Ausgabeverzeichnis der Anwendung.

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de